package com.dance.netty.netty.buf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;

import java.nio.charset.StandardCharsets;

public class NettyByteBuf02 {
    public static void main(String[] args) {

        ByteBuf byteBuf = Unpooled.copiedBuffer("hello,world!", StandardCharsets.UTF_8);

        // 调用相关的方法
        if(byteBuf.hasArray()){

            // 获取字节数组
            byte[] array = byteBuf.array();

            // 转为字符串输出
            System.out.println(new String(array,StandardCharsets.UTF_8));

            // 输出ByteBuf
            System.out.println("byte buf is " + byteBuf);

            // 数组偏移量
            System.out.println(byteBuf.arrayOffset());

            // readerIndex 位置
            System.out.println(byteBuf.readerIndex());

            // writerIndex 位置
            System.out.println(byteBuf.writerIndex());

            // capacity 边界
            System.out.println(byteBuf.capacity());

            // 读取宇哥字节
            System.out.println(byteBuf.readByte());

            // 读取指定位置的一个字节
            System.out.println(byteBuf.getByte(0));

            // 可读的字节数
            System.out.println(byteBuf.readableBytes());

            for (int i = 0; i < byteBuf.readableBytes(); i++) {
                System.out.println((char)byteBuf.getByte(i));
            }

            // 从0开始读取4个字节
            System.out.println(byteBuf.getCharSequence(0, 4, StandardCharsets.UTF_8));
            // 从4开始读取6个字节
            System.out.println(byteBuf.getCharSequence(4, 6, StandardCharsets.UTF_8));

        }
    }
}
